package com.duofan.gmall.seckill.scheduled;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


/**
 * 定时任务
 * 1.@EnableScheduling  开启定时任务
 * 2.@Scheduled 开启一个定时任务
 * 3.自动配置类 TaskExecutionAutoConfiguration
 *
 * 阻塞问题
 * 1.可以使业务以 CompletableFuture.runAsAsync异步执行
 * 2.支持定时任务线程池,设置 TashSchedulingProperties(这里不好使)
 * 3.定时任务异步执行
 *
 * 异步任务
 * 1.@EnableAsync开启异步任务功能
 * 2.异步方法加@Async
 */
@Slf4j
@Component
// @EnableAsync // 开启异步任务
// @EnableScheduling
public class HelloSchedule {


    // @Scheduled(cron = "* * * * * ?") // 每秒
    // @Scheduled(cron = "* * * * * 5") // 周五每秒
    // @Scheduled(cron = "*/5 * * * * 5") // 周五每5秒
    @Async
    // @Scheduled(cron = "* * * * * 5")
    public void hello() throws InterruptedException {
         log.info("hello");
        // 默认是阻塞
         Thread.sleep(3000);
    }

}
